package com.cskaoyan.javase.array._4operation._1get;

import javax.swing.*;

/**
 * 获取数组元素中的最值,以int数组为例
 *
 * @since 16:04
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        int[] arr = {-123, 123, 12, 3, 12, 31, 23, 12, 3, 12, 32, 4, 23, 4, 5, 34, 5, 34, -534, 5, 39994};
        System.out.println(getMaxElementInIntArr(arr));
        System.out.println(getMinElementInIntArr(arr));
    }

    // 需求: 求一个int数组中元素的最大值
    // 思路: 循环遍历比较,找出最值
    public static int getMaxElementInIntArr(int[] arr) {
        // 采用的"擂台法",先假设第一个元素是最大值,然后遍历比较
        int max = arr[0];
        for (int ele : arr) {
            if (ele > max) {
                // 如果元素比设定的最大值还要大,那么成为新的最大值
                max = ele;
            }
        }
        // 遍历完整个数组后,max就是数组中的最大值了
        return max;
    }

    // 需求: 求一个int数组中元素的最小值
    // 思路: 循环遍历比较,找出最值
    public static int getMinElementInIntArr(int[] arr) {
        // 采用的"擂台法",先假设第一个元素是最小值,然后遍历比较
        int min = arr[0];
        // 遍历从下标1开始,因为没必要和自己比较了
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] < min) {
                // 如果元素比设定的最小值还要大小,那么成为新的最小值
                min = arr[i];
            }
        }
        // 遍历完整个数组后,min就是数组中的最小值了
        return min;
    }

}
